package com.heima.collectionAndMap.map;

import java.util.HashMap;
import java.util.Iterator;
import java.util.Map;
import java.util.Set;

public class MapDemo02 {
    public static void main(String[] args) {
        /**
         * 遍历map
         */

        // 创建map对象, 添加数据
        Map<String, String> m = new HashMap<>();
        m.put("尹志平", "小龙女");
        m.put("郭靖", "穆念慈");
        m.put("欧阳克", "黄蓉");

        // 1. 键找值
        // 1.1 获取所有键, 并将其放到单列集合
        Set<String> keys = m.keySet();
        // 1.2 增强for遍历
        for (String key : keys) {
            String value = m.get(key);
            // System.out.println(key+"="+value);
        }
        // // 1.3 迭代器遍历
        // Iterator<String> it = keys.iterator();
        // while(it.hasNext())
        // {
        //     String key = it.next();
        //     System.out.println(key);
        // }
        // // 1.4 Lambda表达式遍历
        // keys.forEach(key -> System.out.println(key));

        // 2. 键值对
        Set<Map.Entry<String, String>> entries = m.entrySet();
        // 2.1 增强for
        for (Map.Entry<String, String> entry : entries) {
            // String key = entry.getKey();
            // String value = entry.getValue();
            // System.out.println(key+"="+value);
            // System.out.println(entry);
        }
        // // 2.2 迭代器
        // Iterator<Map.Entry<String, String>> it = entries.iterator();
        // while(it.hasNext())
        // {
        //     Map.Entry<String, String> entry = it.next();
        //     // System.out.println(entry);
        // }
        // // 2.3 Lambda表达式
        // entries.forEach(entry -> System.out.println(entry));

        // 3. Lambda表达式
        // 源码: 通过entrySet()获取键值对集合, 再调用accept方法
        m.forEach((key, value)-> System.out.println(key+"="+value));
    }
}
